SpringApplication initialize 方法:
1 | private void initialize(Object[] sources) { |
setInitializers 方法即找到 ApplicationContextInitializer 类并实例化
ApplicationContextInitializer 是 Spring 框架中的接口,其作用可以理解为在 ApplicationContext 执行 refresh 之前,调用 initialize() 方法,对 ApplicationContext 做进一步的设置和处理:1
2
3public interface ApplicationContextInitializer<C extends ConfigurableApplicationContext> {
void initialize(C var1);
}
ApplicationContextInitializer 在 SpringBoot 中包含两块:
spring-boot-x.x.x.RELEASE.jar/META-INF/spring.factories中:1
2
3
4
5
6# Application Context Initializers
org.springframework.context.ApplicationContextInitializer=\
org.springframework.boot.context.ConfigurationWarningsApplicationContextInitializer,\
org.springframework.boot.context.ContextIdApplicationContextInitializer,\
org.springframework.boot.context.config.DelegatingApplicationContextInitializer,\
org.springframework.boot.context.embedded.ServerPortInfoApplicationContextInitializer
spring-boot-autoconfigure-x.x.x.RELEASE.jar/META-INF/spring.factories中:1
2
3
4# Initializers
org.springframework.context.ApplicationContextInitializer=\
org.springframework.boot.autoconfigure.SharedMetadataReaderFactoryContextInitializer,\
org.springframework.boot.autoconfigure.logging.AutoConfigurationReportLoggingInitializer